//
//  BaseRequest.h
//  BaseTdkc
//
//  Created by DavidHuang on 16/7/1.
//  Copyright © 2016年 黄栋炜. All rights reserved.
//

#import <Foundation/Foundation.h>
typedef NS_ENUM(NSInteger, RequestType) {
    RequestTypePost = 1,
    RequestTypeGet
};
@interface BaseRequest : NSObject

+ (BaseRequest *)shareInstance;

/**
 *  调用 Api 底层接口
 *
 *  @param requestType 请求类型
 *  @param keyStr      URL地址
 *  @param parameter   参数
 *  @param success     成功返回
 *  @param fail        失败返回
 */
- (void)sendRequestType:(RequestType)requestType Url:(NSString *)keyStr parameter:(NSDictionary *)parameter success:(void (^)(NSDictionary *source))success fail:(void (^)(NSError *error))fail;
/**
 *  上传文件 request
 *
 *  @param urlStr    url
 *  @param parameter 参数
 *  @param fileData   Data 数据流
 *  @param success   成功返回
 *  @param fail      失败返回
 */
- (void)uploadFileWithUrlStr:(NSString *)urlStr parameter:(NSDictionary *)parameter Data:(NSData *)fileData success:(void (^)(NSDictionary *source))success fail:(void (^)(NSError *error))fail;

/**
 *  多张图片同时上传
 *
 *  @param url                  URL 地址
 *  @param images              image 对象
 *  @param parameter           图片的对应参数
 *  @param parameters          请求参数
 *  @param ratio               比例
 *  @param succeedBlock        成功回调
 *  @param failedBlock         失败回调
 *  @param uploadProgressBlock 上传进度条回调
 */
- (void)startMultiPartUploadTaskWithURL:(NSString *)url
                            imagesArray:(NSArray *)images
                      parameterOfimages:(NSString *)parameter
                         parametersDict:(NSDictionary *)parameters
                       compressionRatio:(float)ratio
                           succeedBlock:(void(^)(id operation, id responseObject))succeedBlock
                            failedBlock:(void(^)(id operation, NSError *error))failedBlock
                    uploadProgressBlock:(void(^)(float uploadPercent,long long totalBytesWritten,long long totalBytesExpectedToWrite))uploadProgressBlock;

@end
